<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--
			全局作用域
			在js中<script></script>
			标签中就是全局作用域，页面打开是全局作用域开启 页面关闭时全局作用域销毁
			全局变量
			1，在全局作用域中声明
			2，在局部作用域中无var 声明(直接赋值)
			
			
			
			局部作用域
			通常是函数体内，调用函数时开启局部作用域 函数执行完毕局部作用域销毁
			
			局部变量
	  			2.在函数体内声明的变量
				
			this
			解析器调用函数时会向函数传递一个隐含的参数 这个隐含的参数就是this  
			this指向的是一个对象 
			这个对象我们称为函数执行上下文的对象
			调用方式不同指向的对象不同
			1.在函数调用中 默认this指向window
			2.对象属性的方法调用时 this指向调用这个方法的对象	
				
			this 解析器在调用函数时向函数传递一个参数  
			
			1.以函数形式调用时 this指向window 
			2.以对象属性的方法调用时  this指向调用它的那个对象
			 
			  
			工厂模式创建对象	
			通过工厂函数可以大批量创建函数
			步骤
			1.写一个函数
			2.在函数中创建对象
			3.将对象(事件源)  			  作为返回值返回
			4.给对象添加属性
			
			
			
			构造函数创建Person
			构造函数就是普通函数 创建时与普通函数一样  构造函数名称是首字母大写 
			调用时构造函数是首字母大写
			调用时 普通函数是直接调用 构造函数是通过new关键字调用
			function Person(name,age,address){
            this.name=name;
            this.age=age;
            this.address=address;
            return this
            }
            var per=new Person("hejain",23,"nan")
            console.log(per)
			
		-->
		
		<script>
//			
//			function fun(){
//				var a=123;
//		 a=456;
//				console.log(a)
////				var a=(4,5,6);
//			}
//			fun()
//			
			
			
//			function fun(){
//				var a=123;
//				return a;
//				
//			}
//			console.log( fun())
//          fun()调用函数，输出函数内返回的结果
//          fun函数 （对象）将整个函数输出


//function fun(){
//	console.log(111)
//}
//var obj={
//	name:"雕塑",
//	sayName:fun
//}
//fun()
//obj.sayName()
//console.log(obj.sayName==fun)


//function fun(){
//	console.log(this.name)
//}
//fun()//windows
//var obj={
//	name:"雕塑",
//	sayName:fun
//}

//function fun(){
//	console.log(this)
//}
////window.fun()
//fun()
//var tangseng={
//	name:"唐三藏",
//	doIt:fun
//}
//tangseng.doIt();
//obj.sayName()//obj对象
////123
//
//var hejian={
//	name:"贱哥",
//	sayHello:fun 
//}

//var neZha={
//	name:"耨炸"
//	age:3,
//	sex:"男的"
//}



//function creatPerson(){
//	var neZha={
//		name:"哪吒",
//		age:3,
//		sex:"男的"
//	}
//	console.log(neZha)
//}
//
//creatPerson()
//creatPerson()
//creatPerson()
//creatPerson()
//creatPerson()


//function creatPerson(name,age,sex){
//	var neZha={
//		name:name,
//		age:age,
//		sex:sex
//	}
//	console.log(neZha)
//}
//creatPerson("哪吒",13,"男");
//creatPerson("牛魔王",8,"公");
//creatPerson("熊大",12,"男");
//creatPerson("熊二",10,"男");
//creatPerson("啧啧啧",12," ");






		</script>
		
		<script>
//			function creatPerson(name,age,sex){
//	var dog=new Object();
//	     dog.name=name;
//	     dog.age=age;
//	     dog.sex=sex;
//creatPerson("哪吒",13,"男");
//creatPerson("牛魔王",8,"公");
//creatPerson("熊大",12,"男");
//creatPerson("熊二",10,"男");
//creatPerson("啧啧啧",12,"男 ");

//构造函数创建Person
//1.创建构造函数
//2.创建对象
//3.this指向
//4.返回值return

//function Person(){
//
//}
//var  result=new Person()
//console.log(result)
function Person(name,age,address){
   this.name=name;
   this.age=age;
   this.address=address;
   return this
}
var per=new Person("hejain",23,"nan")
console.log(per)





function Dog(name,age,height){
	this.name=name;
	this.age=age;
	this.height=height
	return this
}
var sss=new Dog("拉布拉多",12,140)
console.log(sss)
		</script>
	</head>
	<body>
	</body>
</html>
